Page Menuにブックマークを置く(Sagittarius)
https://gyazo.com/f1fb1bea35b1b490be9fc32ab27beae2
ブックマーカー(?)です
たぶんサジタリウスって読みます
Scrapbox上で中身を編集できます
導入方法
ページ下部のコードを自分のページにコピペしてください
使い方
Edit your bookmarksボタンを押すことでSagittarius Bookmarkerというページに飛びます
*このページにリンクを貼ることでブックマークが追加されます*
こんな感じに記述すると
https://gyazo.com/55d2d119ca6bc0d26231b9acebda3e1e
こうやってページメニューにリンクが並びます
https://gyazo.com/f1fb1bea35b1b490be9fc32ab27beae2
反映されたかその場で確認したい場合はリロードが必要です
※メモの追加や、リンクの装飾をしても動作します
https://gyazo.com/e2c84101f7e7d45d2ea13a1fb62f4426
https://gyazo.com/4823be7e0e916a24f532dbb2afd8f68c
使用上の注意
[ ]で囲われたリンクにしか対応していません
👌:[http://example.com] ✖️:http://example.com
ハッシュタグに対応していません
👌:[Use Link] ✖️:#Use_Link
基本的にお一人様向けです
同じプロジェクトで複数人が使用する場合は
それぞれのSagittariusに別のページを参照させることで干渉しなくなるはずです
なぜ作ったか
自分のページとかsettingsに検索欄経由でアクセスするのがちょっと面倒だったから
今後
テンプレートとか呼び出せたら便利な気がする
コード
code:script.js
const projectRoot = scrapbox.Project.name
const ____bookmark = "Sagittarius Bookmarker" //参照するページの名前
const ____PinTitle = "Sagittarius"
const ProjectURL = (project = projectRoot, page = "") => https://scrapbox.io/${project}/${page}
const errormessage = `Scrapbox上で手軽に中身を編集できる簡易ブックマークです/li9ri9/liqriq.icon
ブックマークしたいページへのリンクをこのページ内に記述してください
使い方はこちら
※必要なければこのメッセージは削除しても構いません`
scrapbox.PageMenu.addMenu({
title: ____PinTitle,
onClick: function(){;}
})
//PageMenuにアイテムを追加する
const addItem = (title, icon ="" , clickevent) => {
scrapbox.PageMenu(____PinTitle).addItem({
title : title,
image: icon,
onClick: function(){ clickevent() }
})
}
//URLが外部サイトかどうか判別し現在のタブで開くか新規タブで開くか決める
const definelink = (title, URL) => {
if (!title) { title = URL}
if (new RegExp(ProjectURL()).test(URL)) { addItem(title,undefined,() => location.href = URL) }
else { addItem(title,undefined,()=> window.open(URL)) }
}
// []の中身の種類の判別
const textReviewer = text => {
const isExternal = text.split(/\s?(https?:\/\/^\s+)\s?/) if (isExternal.length === 1){
// Scrapboxのリンク
const isOtherProject = isExternal0.split("/") if (isOtherProject.length <2) {definelink(isExternal,ProjectURL(undefined,isExternal))} //プロジェクト内リンク
else{
definelink(${isExternal[0].slice(1)},ProjectURL(isOtherProject1,isOtherProject2))} // 別プロジェクトのリンク }
else{
// 外部リンク
if (isExternal.findIndex(isFirstNull)===0){definelink(isExternal2,isExternal1)} else{definelink(>> ${isExternal[0]},isExternal1)} }
}
const isFirstNull = element => {if(!element){return true}}
//JSON取ってくる
$.get(/api/pages/${projectRoot}/${____bookmark}/text, null, function(data, status){
for(let line of data.split(/\r\n/)){ const splited = line.split(/(\^\[\+\])/)
if(splited.length<=1) continue
for (let part of splited){
if(!part) continue
if(!inner) continue
if(/(\.icon)$/.test(inner)) continue
}
}
scrapbox.PageMenu(____PinTitle).addSeparator()
addItem(Edit your Bookmarks,undefined,()=>location.href=ProjectURL(undefined,____bookmark))
})
.fail(function() {
addItem(Edit your bookmarks,undefined,()=>window.open( ProjectURL(undefined,${____bookmark}?body=${encodeURIComponent(errormessage)})))
})